解题思路:
第一处:把指针p所指的值赋值给b[k]中。
第二处:把空格字符赋值给b[k++]中,而不是一个空格的字符串。
***************************************************
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头 节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87, 则平均分应当 是:78.625。
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
#define N 8
struct slist
{ double s;
struct slist *next;
};
typedef struct slist STREC;
double fun( STREC *h )
{
}
STREC * creat( double *s)
{ STREC *h,*p,*q; int i=0;
h=p=(STREC*)malloc(sizeof(STREC));p->s=0;
while(i { q=(STREC*)malloc(sizeof(STREC));
q->s=s[i]; i++; p->next=q; p=q;
}
p->next=0;
return h;
}
outlist( STREC *h)
{ STREC *p;
p=h->next; printf("head");
do
{ printf("->%4.1f",p->s);p=p->next;}
while(p!=0);
printf("\n\n");
}
main()
{ double s[N]={85,76,69,85,91,72,64,87},ave;
STREC *h;
h=creat( s ); outlist(h);
ave=fun( h );
printf("ave= %6.3f\n",ave);
NONO();
}
解题思路:
本题是计算链表结构中成绩的平均分。具体操作请看答案程序中的说明。
参考答案:
#include
#include
double fun( STREC *h )
{
STREC *p=h->next; /* 由于头结点中没有存放数据 */
double av=0.0; /* 对计算成绩平均值的变量进行初始化 */
int n = 0 ;
while(p!=NULL) { /* 判断链表是否结束 */
av = av + p->s ; /* 对成绩进行累加 */
p=p->next; /* 到下一个结点位置 */
n++; /* 人数加1 */
}
av /= n ; /* 计算成绩平均值 */
return av ; /* 返回成绩平均值 */
}